common.skill

কন্ট্রোল স্টেটমেন্টস

Computer Programming - সি++ প্রোগ্রামিং (C++ Programming)
289
289

কন্ট্রোল স্টেটমেন্টস হলো সি++ প্রোগ্রামে ব্যবহৃত এমন বিবৃতি বা স্টেটমেন্ট যা প্রোগ্রামের নিয়ন্ত্রণ প্রবাহকে পরিচালনা করে। এগুলি প্রোগ্রামকে নির্দিষ্ট শর্ত বা পরিস্থিতির উপর ভিত্তি করে কাজ করার নির্দেশ দেয়। কন্ট্রোল স্টেটমেন্টসের মাধ্যমে প্রোগ্রামাররা শর্তাধীন লজিক তৈরি করতে এবং পুনরাবৃত্তিমূলক কাজ সম্পাদন করতে পারে।

সি++ এ তিন ধরনের কন্ট্রোল স্টেটমেন্টস রয়েছে:

  1. কন্ডিশনাল স্টেটমেন্টস (শর্তযুক্ত বিবৃতি)
  2. ইটারেটিভ স্টেটমেন্টস (পুনরাবৃত্তি বিবৃতি বা লুপ)
  3. জাম্প স্টেটমেন্টস (প্রবাহ পরিবর্তনকারী বিবৃতি)

১. কন্ডিশনাল স্টেটমেন্টস

কন্ডিশনাল স্টেটমেন্টস প্রোগ্রামে শর্তের উপর ভিত্তি করে কোডের নির্দিষ্ট অংশ এক্সিকিউট করতে সহায়ক। সি++ এ তিনটি কন্ডিশনাল স্টেটমেন্টস রয়েছে:

(ক) if স্টেটমেন্ট

if স্টেটমেন্ট একটি শর্ত যাচাই করে এবং শর্তটি সত্য হলে শুধুমাত্র কোডের একটি নির্দিষ্ট অংশ কার্যকর করে।

উদাহরণ:

#include <iostream>
using namespace std;

int main() {
    int age = 20;

    if (age >= 18) {
        cout << "You are an adult." << endl;
    }

    return 0;
}

(খ) if-else স্টেটমেন্ট

if-else স্টেটমেন্ট শর্ত সত্য না হলে বিকল্প কোড এক্সিকিউট করতে ব্যবহৃত হয়।

উদাহরণ:

#include <iostream>
using namespace std;

int main() {
    int age = 16;

    if (age >= 18) {
        cout << "You are an adult." << endl;
    } else {
        cout << "You are a minor." << endl;
    }

    return 0;
}

(গ) if-else if-else স্টেটমেন্ট

if-else if-else স্টেটমেন্ট একাধিক শর্ত যাচাই করতে ব্যবহৃত হয়।

উদাহরণ:

#include <iostream>
using namespace std;

int main() {
    int score = 85;

    if (score >= 90) {
        cout << "Grade: A" << endl;
    } else if (score >= 80) {
        cout << "Grade: B" << endl;
    } else {
        cout << "Grade: C" << endl;
    }

    return 0;
}

(ঘ) switch স্টেটমেন্ট

switch স্টেটমেন্ট একাধিক বিকল্পের মধ্যে নির্দিষ্ট একটি বিকল্পের উপর ভিত্তি করে কার্যকর হয়। এটি সাধারণত স্থিতিশীল মানের ক্ষেত্রে ব্যবহৃত হয়।

উদাহরণ:

#include <iostream>
using namespace std;

int main() {
    int day = 3;

    switch (day) {
        case 1:
            cout << "Monday" << endl;
            break;
        case 2:
            cout << "Tuesday" << endl;
            break;
        case 3:
            cout << "Wednesday" << endl;
            break;
        default:
            cout << "Invalid day" << endl;
    }

    return 0;
}

২. ইটারেটিভ স্টেটমেন্টস (লুপ)

ইটারেটিভ স্টেটমেন্ট বা লুপ প্রোগ্রামের একটি নির্দিষ্ট অংশকে পুনরাবৃত্তি করতে সহায়ক। সি++ এ প্রধানত তিনটি লুপ রয়েছে:

(ক) for লুপ

for লুপ একটি নির্দিষ্ট সংখ্যক সময় কোড এক্সিকিউট করতে ব্যবহৃত হয়। এটি সাধারণত একটি সূচনা মান, শর্ত, এবং ইনক্রিমেন্ট বা ডিক্রিমেন্ট নিয়ে কাজ করে।

উদাহরণ:

#include <iostream>
using namespace std;

int main() {
    for (int i = 0; i < 5; i++) {
        cout << "Number: " << i << endl;
    }

    return 0;
}

(খ) while লুপ

while লুপ শর্ত সত্য থাকলে কোডের একটি নির্দিষ্ট অংশ পুনরায় চালায়।

উদাহরণ:

#include <iostream>
using namespace std;

int main() {
    int i = 0;

    while (i < 5) {
        cout << "Number: " << i << endl;
        i++;
    }

    return 0;
}

(গ) do-while লুপ

do-while লুপ প্রথমে কোডটি একবার চালায় এবং পরে শর্ত যাচাই করে। শর্ত মিথ্যা হলেও এটি কমপক্ষে একবার কোড এক্সিকিউট করে।

উদাহরণ:

#include <iostream>
using namespace std;

int main() {
    int i = 0;

    do {
        cout << "Number: " << i << endl;
        i++;
    } while (i < 5);

    return 0;
}

৩. জাম্প স্টেটমেন্টস

জাম্প স্টেটমেন্ট প্রোগ্রামের প্রবাহকে পরিবর্তন করতে ব্যবহৃত হয়। C++ এ প্রধানত তিনটি জাম্প স্টেটমেন্ট রয়েছে:

(ক) break স্টেটমেন্ট

break স্টেটমেন্ট একটি লুপ বা switch স্টেটমেন্ট থেকে বের হতে ব্যবহৃত হয়।

উদাহরণ:

#include <iostream>
using namespace std;

int main() {
    for (int i = 0; i < 5; i++) {
        if (i == 3) {
            break;
        }
        cout << "Number: " << i << endl;
    }

    return 0;
}

(খ) continue স্টেটমেন্ট

continue স্টেটমেন্ট বর্তমান পুনরাবৃত্তি বাদ দিয়ে পরবর্তী পুনরাবৃত্তিতে চলে যেতে ব্যবহৃত হয়।

উদাহরণ:

#include <iostream>
using namespace std;

int main() {
    for (int i = 0; i < 5; i++) {
        if (i == 2) {
            continue;
        }
        cout << "Number: " << i << endl;
    }

    return 0;
}

(গ) goto স্টেটমেন্ট

goto স্টেটমেন্ট প্রোগ্রামের প্রবাহকে সরাসরি নির্দিষ্ট লেবেলে নিয়ে যেতে ব্যবহৃত হয়, কিন্তু এটি সাধারণত ব্যবহার এড়ানো হয় কারণ এটি কোডকে জটিল করে তোলে।

উদাহরণ:

#include <iostream>
using namespace std;

int main() {
    int i = 0;

start:
    if (i < 3) {
        cout << "Number: " << i << endl;
        i++;
        goto start;
    }

    return 0;
}

সারসংক্ষেপ

কন্ট্রোল স্টেটমেন্টগুলি প্রোগ্রামকে পরিচালনা করতে এবং শর্তাধীন, পুনরাবৃত্তি, এবং প্রবাহ পরিবর্তনের মতো কার্যক্রম সম্পাদন করতে সাহায্য করে। এগুলি ব্যবহার করে প্রোগ্রামাররা প্রোগ্রামের লজিককে আরও কার্যকরী এবং সৃজনশীলভাবে সংগঠিত করতে পারেন।

common.content_added_by

শর্ত ভিত্তিক স্টেটমেন্ট: if, if-else, switch

248
248

শর্ত ভিত্তিক স্টেটমেন্ট (Conditional Statement)হলো এমন কিছু স্টেটমেন্ট যা নির্দিষ্ট শর্ত বা কন্ডিশনের উপর ভিত্তি করে সিদ্ধান্ত গ্রহণ করে এবং প্রোগ্রামে নির্দিষ্ট অংশে প্রবেশ করে বা নির্দিষ্ট কোড চালায়। C++ এ শর্ত ভিত্তিক স্টেটমেন্টের প্রধানত তিনটি ধরন রয়েছে: if, if-else, এবং switch

১. if স্টেটমেন্ট

if স্টেটমেন্ট একটি শর্ত চেক করে এবং যদি শর্তটি সত্য হয়, তাহলে if ব্লকের কোড এক্সিকিউট হয়। যদি শর্তটি মিথ্যা হয়, তবে কোডটি এড়িয়ে যাওয়া হয়।

#include <iostream>
using namespace std;

int main() {
    int number = 10;

    if (number > 5) {
        cout << "Number is greater than 5" << endl;
    }

    return 0;
}

বর্ণনা:

  • এখানে if স্টেটমেন্ট চেক করছে যে number ৫ এর চেয়ে বড় কিনা। যদি এটি সত্য হয়, তাহলে "Number is greater than 5" আউটপুট হিসেবে প্রদর্শিত হবে।

২. if-else স্টেটমেন্ট

if-else স্টেটমেন্ট ব্যবহার করে একটি শর্ত চেক করা হয়। যদি শর্তটি সত্য হয় তবে if ব্লকের কোড এক্সিকিউট হবে; অন্যথায় else ব্লকের কোড এক্সিকিউট হবে।

#include <iostream>
using namespace std;

int main() {
    int age;

    cout << "Enter your age: ";
    cin >> age;

    if (age >= 18) {
        cout << "You are an adult." << endl;
    } else {
        cout << "You are a minor." << endl;
    }

    return 0;
}

বর্ণনা:

  • এখানে if চেক করছে যে age ১৮ বা তার বেশি কিনা। যদি এটি সত্য হয়, তাহলে "You are an adult." প্রিন্ট হবে; অন্যথায়, "You are a minor." প্রিন্ট হবে।

৩. if-else if-else স্টেটমেন্ট

if-else if-else স্টেটমেন্ট ব্যবহার করে একাধিক শর্ত চেক করা যায়। প্রথম শর্তটি মিথ্যা হলে পরবর্তী শর্ত চেক করা হবে। যদি সব শর্ত মিথ্যা হয়, তাহলে else ব্লক এক্সিকিউট হবে।

#include <iostream>
using namespace std;

int main() {
    int score;

    cout << "Enter your score: ";
    cin >> score;

    if (score >= 90) {
        cout << "Grade: A" << endl;
    } else if (score >= 80) {
        cout << "Grade: B" << endl;
    } else if (score >= 70) {
        cout << "Grade: C" << endl;
    } else {
        cout << "Grade: F" << endl;
    }

    return 0;
}

বর্ণনা:

  • এখানে একাধিক শর্ত চেক করা হয়েছে। যদি score ৯০ বা তার বেশি হয়, তাহলে "Grade: A" প্রদর্শিত হবে; যদি ৮০ বা তার বেশি হয়, "Grade: B", যদি ৭০ বা তার বেশি হয় "Grade: C" প্রদর্শিত হবে। অন্যথায় "Grade: F" প্রদর্শিত হবে।

৪. switch স্টেটমেন্ট

switch স্টেটমেন্ট একটি ভ্যারিয়েবলের মানের উপর ভিত্তি করে একাধিক শর্ত পরীক্ষা করে। এটি সাধারণত এমন ক্ষেত্রে ব্যবহৃত হয় যেখানে একটি ভ্যারিয়েবল একাধিক স্থির মানের মধ্যে যেকোনো একটি হতে পারে। switch স্টেটমেন্টে প্রতিটি সম্ভাব্য মানের জন্য একটি case তৈরি করা হয় এবং যদি কোনো কেসের সাথে মান মিলে যায়, তবে সেই কেসের ব্লক এক্সিকিউট হয়।

#include <iostream>
using namespace std;

int main() {
    int day;

    cout << "Enter day number (1-7): ";
    cin >> day;

    switch (day) {
        case 1:
            cout << "Monday" << endl;
            break;
        case 2:
            cout << "Tuesday" << endl;
            break;
        case 3:
            cout << "Wednesday" << endl;
            break;
        case 4:
            cout << "Thursday" << endl;
            break;
        case 5:
            cout << "Friday" << endl;
            break;
        case 6:
            cout << "Saturday" << endl;
            break;
        case 7:
            cout << "Sunday" << endl;
            break;
        default:
            cout << "Invalid day number" << endl;
    }

    return 0;
}

বর্ণনা:

  • এখানে day ভ্যারিয়েবলের মান চেক করা হচ্ছে। যদি এটি 1, 2, 3, ... 7 এর মধ্যে কোনো একটি হয়, তাহলে সংশ্লিষ্ট দিনটি প্রিন্ট হবে। break স্টেটমেন্টটি প্রতিটি কেস ব্লকের শেষে ব্যবহার করা হয়, যাতে একটি কেস এক্সিকিউট হওয়ার পর switch থেকে বেরিয়ে আসে।
  • default কেস তখন এক্সিকিউট হয় যখন day এর মান কোনো কেসের সাথে মেলে না। এটি ঐচ্ছিক কিন্তু প্রয়োজনীয় নয়।

সারসংক্ষেপ

  • if: একক শর্ত চেক করার জন্য ব্যবহৃত হয়।
  • if-else: একটি শর্ত সত্য না হলে অন্য ব্লক এক্সিকিউট করার জন্য ব্যবহৃত হয়।
  • if-else if-else: একাধিক শর্ত চেক করতে ব্যবহৃত হয়।
  • switch: একাধিক নির্দিষ্ট মানের মধ্যে একটির সাথে মিলে গেলে নির্দিষ্ট ব্লক এক্সিকিউট করে।

এগুলি ব্যবহার করে প্রোগ্রামিংয়ে সিদ্ধান্ত গ্রহণ এবং প্রোগ্রামের কার্যক্রম নিয়ন্ত্রণ করা সম্ভব হয়।

common.content_added_and_updated_by

লুপিং স্টেটমেন্ট: for, while, do-while

270
270

লুপিং স্টেটমেন্ট বা লুপ হলো প্রোগ্রামে একাধিকবার কোডের একটি নির্দিষ্ট অংশ পুনরায় চালানোর পদ্ধতি। সি++ এ লুপিং স্টেটমেন্ট ব্যবহার করে প্রোগ্রামাররা একই কোড একাধিকবার কার্যকর করতে পারেন। সি++ এ তিন ধরনের লুপিং স্টেটমেন্ট রয়েছে:

  1. for লুপ
  2. while লুপ
  3. do-while লুপ

১. for লুপ

for লুপ সাধারণত একটি নির্দিষ্ট সংখ্যক সময় কোড এক্সিকিউট করতে ব্যবহৃত হয়। for লুপের মধ্যে সাধারণত তিনটি অংশ থাকে: সূচনামূলক বিবৃতি (initialization), শর্ত (condition), এবং ইনক্রিমেন্ট বা ডিক্রিমেন্ট (increment/decrement)।

সাধারণ গঠন:

for (initialization; condition; increment/decrement) {
    // কোড ব্লক যা পুনরায় চালানো হবে
}

উদাহরণ:

#include <iostream>
using namespace std;

int main() {
    for (int i = 0; i < 5; i++) {
        cout << "Number: " << i << endl;
    }
    return 0;
}

কিভাবে কাজ করে:

  1. প্রথমে initialization অংশটি একবার চালিত হয়।
  2. এরপর condition অংশটি যাচাই করা হয়। শর্ত সত্য হলে কোড ব্লক এক্সিকিউট হয় এবং মিথ্যা হলে লুপ শেষ হয়।
  3. কোড ব্লক এক্সিকিউট হওয়ার পর increment/decrement অংশটি চালিত হয় এবং পুনরায় condition যাচাই করা হয়।
  4. প্রক্রিয়াটি condition মিথ্যা হওয়া পর্যন্ত চলতে থাকে।

২. while লুপ

while লুপ প্রথমে শর্ত যাচাই করে, এবং শর্ত সত্য হলে কোডের একটি নির্দিষ্ট অংশ পুনরায় চালায়। while লুপ সাধারণত ব্যবহার করা হয় যখন পুনরাবৃত্তি সংখ্যা নির্দিষ্ট না থাকে।

সাধারণ গঠন:

while (condition) {
    // কোড ব্লক যা পুনরায় চালানো হবে
}

উদাহরণ:

#include <iostream>
using namespace std;

int main() {
    int i = 0;
    while (i < 5) {
        cout << "Number: " << i << endl;
        i++;
    }
    return 0;
}

কিভাবে কাজ করে:

  1. প্রথমে condition যাচাই করা হয়।
  2. শর্ত সত্য হলে কোড ব্লক এক্সিকিউট হয় এবং কোড ব্লকের শেষে আবার condition যাচাই করা হয়।
  3. condition মিথ্যা হওয়া পর্যন্ত প্রক্রিয়াটি চলতে থাকে।

৩. do-while লুপ

do-while লুপ প্রথমে কোড ব্লক এক্সিকিউট করে এবং পরে শর্ত যাচাই করে। এর মানে, শর্ত মিথ্যা হলেও এটি অন্তত একবার কোড ব্লক এক্সিকিউট করে।

সাধারণ গঠন:

do {
    // কোড ব্লক যা অন্তত একবার চালানো হবে
} while (condition);

উদাহরণ:

#include <iostream>
using namespace std;

int main() {
    int i = 0;
    do {
        cout << "Number: " << i << endl;
        i++;
    } while (i < 5);
    return 0;
}

কিভাবে কাজ করে:

  1. প্রথমে কোড ব্লকটি একবার এক্সিকিউট হয়।
  2. এরপর condition যাচাই করা হয়।
  3. শর্ত সত্য হলে কোড ব্লক পুনরায় চালিত হয় এবং মিথ্যা হলে লুপ শেষ হয়।

তুলনামূলক পার্থক্য

বৈশিষ্ট্যfor লুপwhile লুপdo-while লুপ
ব্যবহারনির্দিষ্ট সংখ্যক পুনরাবৃত্তির জন্যশর্ত ভিত্তিক পুনরাবৃত্তির জন্যঅন্তত একবার কোড চালানোর পর শর্ত যাচাই করে
শর্ত যাচাইশুরুতেই শর্ত যাচাইশুরুতেই শর্ত যাচাইশেষে শর্ত যাচাই
কোড এক্সিকিউশনশর্ত মিথ্যা হলে একবারও এক্সিকিউট হয় নাশর্ত মিথ্যা হলে একবারও এক্সিকিউট হয় নাশর্ত মিথ্যা হলেও অন্তত একবার এক্সিকিউট হয়

সারসংক্ষেপ

সি++ এ লুপিং স্টেটমেন্টগুলি প্রোগ্রামের কোড পুনরাবৃত্তি করতে ব্যবহৃত হয়। for লুপ সাধারণত নির্দিষ্ট সংখ্যক পুনরাবৃত্তির জন্য ব্যবহার করা হয়, while লুপ শর্তের উপর ভিত্তি করে পুনরাবৃত্তি করে, এবং do-while লুপ শর্ত যাচাইয়ের আগে অন্তত একবার কোড এক্সিকিউট করে। এই লুপগুলি প্রোগ্রামিংকে আরও কার্যকরী এবং সময় সাশ্রয়ী করতে সহায়ক।

common.content_added_and_updated_by

ব্রেক এবং কন্টিনিউ স্টেটমেন্ট

222
222

ব্রেক (break) এবং কন্টিনিউ (continue) স্টেটমেন্ট C++ এ লুপ এবং switch স্টেটমেন্টের ভিতরে ব্যবহৃত হয়। এদের সাহায্যে লুপের কার্যক্রম নিয়ন্ত্রণ করা হয় এবং প্রোগ্রামের কার্যক্রমের নির্দিষ্ট অংশ এড়িয়ে যাওয়া বা সম্পূর্ণরূপে লুপ বন্ধ করার সুযোগ পাওয়া যায়।

১. break স্টেটমেন্ট

break স্টেটমেন্ট একটি লুপ বা switch স্টেটমেন্টের কার্যক্রম সম্পূর্ণরূপে বন্ধ করে এবং লুপের বাইরে চলে আসে। এটি সাধারণত for, while, do-while লুপ এবং switch স্টেটমেন্টের ভিতরে ব্যবহৃত হয়।

উদাহরণ: break স্টেটমেন্ট একটি লুপে ব্যবহার

#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 10; i++) {
        if (i == 5) {
            break; // লুপ বন্ধ করবে যখন i এর মান ৫ হবে
        }
        cout << i << " ";
    }
    return 0;
}

বর্ণনা:

  • এখানে for লুপের মাধ্যমে ১ থেকে ১০ পর্যন্ত সংখ্যা প্রিন্ট করার জন্য চেষ্টা করা হচ্ছে। কিন্তু যখন i এর মান ৫ হয়, তখন break স্টেটমেন্ট লুপ বন্ধ করে এবং for লুপ থেকে বেরিয়ে আসে। তাই আউটপুটে শুধুমাত্র ১ থেকে ৪ পর্যন্ত সংখ্যা প্রদর্শিত হবে।

উদাহরণ: break স্টেটমেন্ট switch স্টেটমেন্টে ব্যবহার

#include <iostream>
using namespace std;

int main() {
    int day = 3;

    switch (day) {
        case 1:
            cout << "Monday" << endl;
            break;
        case 2:
            cout << "Tuesday" << endl;
            break;
        case 3:
            cout << "Wednesday" << endl;
            break;
        default:
            cout << "Invalid day" << endl;
    }

    return 0;
}

বর্ণনা:

  • এখানে switch স্টেটমেন্টে day ভ্যারিয়েবল চেক করা হচ্ছে। যখন day এর মান 3 হয়, তখন "Wednesday" প্রিন্ট হয় এবং break স্টেটমেন্ট switch থেকে বেরিয়ে আসে।

২. continue স্টেটমেন্ট

continue স্টেটমেন্ট একটি লুপের বর্তমান পুনরাবৃত্তি (iteration) বাদ দিয়ে পরবর্তী পুনরাবৃত্তিতে চলে যায়। এটি সাধারণত এমন ক্ষেত্রে ব্যবহৃত হয় যেখানে একটি নির্দিষ্ট শর্ত পূরণের সময় লুপের অবশিষ্ট অংশ এড়িয়ে যাওয়া প্রয়োজন এবং পরবর্তী পুনরাবৃত্তিতে যেতে হয়।

উদাহরণ: continue স্টেটমেন্ট একটি লুপে ব্যবহার

#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 10; i++) {
        if (i == 5) {
            continue; // i এর মান ৫ হলে বর্তমান পুনরাবৃত্তি বাদ দিয়ে পরবর্তী পুনরাবৃত্তিতে চলে যাবে
        }
        cout << i << " ";
    }
    return 0;
}

বর্ণনা:

  • এখানে for লুপের মাধ্যমে ১ থেকে ১০ পর্যন্ত সংখ্যা প্রিন্ট করার জন্য চেষ্টা করা হচ্ছে। কিন্তু যখন i এর মান ৫ হয়, তখন continue স্টেটমেন্টের কারণে লুপের বর্তমান পুনরাবৃত্তি বাদ দিয়ে পরবর্তী পুনরাবৃত্তিতে চলে যায়। তাই আউটপুটে ৫ ছাড়া ১ থেকে ১০ পর্যন্ত সমস্ত সংখ্যা প্রদর্শিত হবে।

break এবং continue এর পার্থক্য

বৈশিষ্ট্যbreakcontinue
কার্যক্রমলুপ বা switch স্টেটমেন্ট সম্পূর্ণরূপে বন্ধ করে।বর্তমান পুনরাবৃত্তি বাদ দিয়ে পরবর্তী পুনরাবৃত্তিতে চলে যায়।
ব্যবহারের ক্ষেত্রেলুপ এবং switch স্টেটমেন্টে ব্যবহৃত হয়।শুধুমাত্র লুপে ব্যবহৃত হয়।
সাধারণ উদাহরণif (i == 5) { break; }if (i == 5) { continue; }

সারসংক্ষেপ

  • break স্টেটমেন্ট একটি লুপ বা switch স্টেটমেন্ট সম্পূর্ণরূপে বন্ধ করে দেয়।
  • continue স্টেটমেন্ট লুপের বর্তমান পুনরাবৃত্তি এড়িয়ে পরবর্তী পুনরাবৃত্তিতে চলে যায়।

এই স্টেটমেন্টগুলো প্রোগ্রামের কার্যক্রম নিয়ন্ত্রণ করতে সাহায্য করে এবং প্রোগ্রামকে আরও কার্যকরী ও নিয়ন্ত্রণযোগ্য করে তোলে।

common.content_added_and_updated_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion